package transferObjects
{
	import transferObjects.Administrador.AdministradorTO;
	import transferObjects.Docente.DocenteTO;
	import transferObjects.Gae.GaeTO;
	import transferObjects.Socio.SocioTO;
	
	[RemoteClass(alias="dao.transferObjects.UsuarioUnificadoTO")]
	
	public class UsuarioUnificadoTO
	{		
		private var _usuario:UsuarioTO;
		private var _administrador:AdministradorTO;
		private var _docente:DocenteTO;
		private var _socio:SocioTO;
		private var _gae:GaeTO;
		
		//Usuario
		private var _rut:int;
		private var _verificador:String;
		private var _contrasena:String;
		private var _tipo:String;
		private var _eliminado:Boolean;
		
		//Admin && Admin
		private var _nombre:String;
		private var _apellido:String;
		private var _correo:String;
		private var _tipo_fono:String;
		private var _fono:int;
		
		//Socio
		private var _descripcion:String;
		private var _nombreEncargado:String;
		private var _apellidoEncargado:String;
		
		//Direccion
		private var _ciudad:String;
		private var _comuna:String;
		private var _direccion:String;
		
		public function UsuarioUnificadoTO()
		{
			this._usuario = new UsuarioTO();
			this._administrador = new AdministradorTO();
			this._docente = new DocenteTO();
			this._socio = new SocioTO();
			this._gae = new GaeTO();
			
			this._rut = -1;
			this._verificador="";
			this._contrasena = "";
			this._tipo = "";
			this._eliminado = false;
			
			this._nombre = "";
			this._apellido = "";
			this._correo = "";
			this._tipo_fono = " C ";
			this._fono = -1;
			
			this._descripcion = "";
			this._nombreEncargado = "";
			this._apellidoEncargado = "";
			
			this._ciudad = "";
			this._comuna = "";
			this._direccion = "";
		}
		/* **************************************************************** */
		[Bindable]
		public function get usuario():UsuarioTO
		{
			return this._usuario;
		}
	
		public function set usuario(_usuario:UsuarioTO):void
		{
			this._usuario = _usuario;
		}
		/* **************************************************************** */
		[Bindable]
		public function get administrador():AdministradorTO
		{
			return this._administrador;
		}
	
		public function set administrador(_administrador:AdministradorTO):void
		{
			this._administrador = _administrador;
		}
		/* **************************************************************** */
		[Bindable]
		public function get docente():DocenteTO
		{
			return this._docente;
		}
	
		public function set docente(_docente:DocenteTO):void
		{
			this._docente = _docente;
		}
		/* **************************************************************** */
		[Bindable]
		public function get socio():SocioTO
		{
			return this._socio;
		}
	
		public function set socio(_socio:SocioTO):void
		{
			this._socio = _socio;
		}
		/* **************************************************************** */
		[Bindable]
		public function get gae():GaeTO
		{
			return this._gae;
		}
	
		public function set gae(_gae:GaeTO):void
		{
			this._gae = _gae;
		}
		/* **************************************************************** */
		[Bindable]
		public function get rut():int
		{
			return this._rut;
		}
	
		public function set rut(_rut:int):void
		{
			this._rut = _rut;
		}
		/* **************************************************************** */
		[Bindable]
		public function get verificador():String
		{
			return this._verificador;
		}
	
		public function set verificador(_verificador:String):void
		{
			this._verificador = _verificador;
		}
		/* **************************************************************** */
		[Bindable]
		public function get contrasena():String
		{
			return this._contrasena;
		}
	
		public function set contrasena(_contrasena:String):void
		{
			this._contrasena = _contrasena;
		}
		/* **************************************************************** */
		[Bindable]
		public function get tipo():String
		{
			return this._tipo;
		}
	
		public function set tipo(_tipo:String):void
		{
			this._tipo = _tipo;
		}
		/* **************************************************************** */
		[Bindable]
		public function get eliminado():Boolean
		{
			return _eliminado;
		}
	
		public function set eliminado(_eliminado:Boolean):void
		{
			this._eliminado = _eliminado;
		}
		/* **************************************************************** */
		[Bindable]
		public function get nombre():String
		{
			return this._nombre;
		}
	
		public function set nombre(_nombre:String):void
		{
			this._nombre = _nombre;
		}
		/* **************************************************************** */
		[Bindable]
		public function get apellido():String
		{
			return this._apellido;
		}
	
		public function set apellido(_apellido:String):void
		{
			this._apellido = _apellido;
		}
		/* **************************************************************** */
		[Bindable]
		public function get correo():String
		{
			return this._correo;
		}
	
		public function set correo(_correo:String):void
		{
			this._correo = _correo;
		}
		/* **************************************************************** */
		[Bindable]
		public function get tipo_fono():String
		{
			return this._tipo_fono;
		}
		public function set tipo_fono(_tipo_fono:String):void
		{
			this._tipo_fono=_tipo_fono;
		}
		/* **************************************************************** */
		[Bindable]
		public function get fono():int
		{
			return this._fono;
		}
	
		public function set fono(_fono:int):void
		{
			this._fono = _fono;
		}
		/* **************************************************************** */
		[Bindable]
		public function get descripcion():String
		{
			return this._descripcion;
		}
	
		public function set descripcion(_descripcion:String):void
		{
			this._descripcion = _descripcion;
		}
		/* **************************************************************** */
		[Bindable]
		public function get nombreEncargado():String
		{
			return this._nombreEncargado;
		}
	
		public function set nombreEncargado(_nombreEncargado:String):void
		{
			this._nombreEncargado = _nombreEncargado;
		}
		/* **************************************************************** */
		[Bindable]
		public function get apellidoEncargado():String
		{
			return this._apellidoEncargado;
		}
	
		public function set apellidoEncargado(_apellidoEncargado:String):void
		{
			this._apellidoEncargado = _apellidoEncargado;
		}
		/* **************************************************************** */
		[Bindable]
		public function get ciudad():String
		{
			return this._ciudad;
		}
	
		public function set ciudad(_ciudad:String):void
		{
			this._ciudad = _ciudad;
		}
		/* **************************************************************** */
		[Bindable]
		public function get comuna():String
		{
			return this._comuna;
		}
	
		public function set comuna(_comuna:String):void
		{
			this._comuna = _comuna;
		}
		/* **************************************************************** */
		[Bindable]
		public function get direccion():String
		{
			return this._direccion;
		}
	
		public function set direccion(_direccion:String):void
		{
			this._direccion = _direccion;
		}
		/* **************************************************************** */
		
		/***********************************************************************/
		/**PARA MOSTRAR LOS NOMBRES Y APELLIDOS DE LOS USUARIOS EN UN DATAGRID**/
		/***********************************************************************/
		public function get nombreUser():String
		{
			if(administrador.nombre!=""){
				return administrador.nombre;
			}
			else{
				if(docente.nombre!=""){
					return docente.nombre;
				}
				else{
					if(socio.nombre!=""){
						return socio.nombre;
					}
				}
			}
			return "- - -";
		}
		public function get apellidoUser():String
		{
			if(administrador.apellido!=""){
				return administrador.apellido;
			}
			else{
				if(docente.apellido!=""){
					return docente.apellido;
				}
				else{
					if(socio.nombreEncargado!=""){
						return socio.nombreEncargado+" "+socio.apellidoEncargado;
					}
				}
			}
			return "- - -";
		}
		public function get tipoUser():String
		{
			if(usuario.tipo!=""){
				return usuario.tipo;
			}
			return "- - -";
		}
		public function get eliminadoEstado():String
		{
			if(this.usuario.eliminado)
				return "INACTIVO";
			else
				return "ACTIVO";
		}
		public function get nombreApellido():String
		{
			if(usuario.tipo == "administrador"){
				return this._administrador.nombre+" "+this._administrador.apellido; 
			}
			else{
				if(usuario.tipo == "docente"){
					return this._docente.nombre+""+this._docente.apellido;
				}
				else{
					if(usuario.tipo == "socio comunitario"){
						return this._socio.nombre;		
					}
					else{
						if(usuario.tipo == "gae"){
							return this._gae.nombre_gae;
						}
					}
				}
			}
			return "";
		}

	}
}